//结构体练习

#define NAME_LEN 64

#include <stdio.h>
//结构体
//struct student
//{
//	char name[NAME_LEN];
//	int height;
//	float weight;
//	long schols;
//};
//int main()
//{
//	//struct student 为数据类型，takao才是变量
//	struct student takao = { "TAKAO",173,86.2 };
//
//	printf("姓名 = %s\n", takao.name);
//	printf("身高 = %d\n", takao.height);
//	printf("体重 = %lf\n", takao.weight);
//	printf("奖学金 = %d\n", takao.schols);
//
//	//在结构体中，位于前面的成员地址小，后面的成员地址大
//	printf("%p\n", &takao.name);
//	printf("%p\n", &takao.height);
//	printf("%p\n", &takao.weight);
//	printf("%p\n", &takao.schols);
//	return 0;
//}
//
//
//struct student
//{
//	char name[NAME_LEN];
//	int height;
//	float weight;
//	long schols;
//}a,*p = &a;//在结构体花括号后可以直接创建该类型的变量a 就相当于 struct student a;  指针p就相当于 sturct student *p;
//
//int main()
//{
//	//p是一个指针变量，指向的是结构体变量a，所以可以通过*(p).name，这种方式来访问a对象中name这个成员
//	//这种方式麻烦，且容易出错，*(p).name，的这个括号不能少，少了就是错，所以可以通过另一个访问运算符(->)来引用
//	//p->name,表示的就是，指针p指向对象的成员name
//	scanf("%d %d", &(a.height), &(p->schols));
//
//	printf("%d\n", a.height);
//	printf("%d\n", p->schols);
//	return 0;
//}







struct student
{
	char name[60];
	int age;
	int height;
	float weight;
}a,*p = &a;

int main()
{
	p->age = 18;                          //表示p所指结构体对象a的成员age      相当于 (*p).age;
	p->height = 180;                      //表示p所指结构体对象a的成员height   相当于 (*p).height;
	p->weight = 51.1;                     //表示p所指结构体对象a的成员weight   相当于 (*p).weight;
	strcpy(p->name, "zhangsan");          //表示p所指结构体对象a的成员name     相当于 (*p).name;
}
